/*    

    bobbietalk - a visual programming environment for toy robotics

    Copyright (C) 2013  Roberto Tiella

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/
package bobbietalk.gui.blocks.parametrized;

import bobbietalk.gui.blocks.MiddleBlock;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author tiella
 */
public abstract class ParametrizedBlock extends MiddleBlock {

   
    public abstract String getCodeTemplate(String pLang);
    public abstract void setCodeTemplate(String pLang, String pseudoCode);

    public abstract void addAttribute(String name, TypeSpec ts, String label, String defaultValue,
            String u, boolean editable, boolean showInLabel);

    public abstract List<String> getAttributeNames();
    public abstract String getAttributeValueAsString(String n);
    public abstract String getUnits(String n);

    @Override
    public abstract String getText();

    @Override
    public void serializeAttributes(StringBuilder buffer) {
        super.serializeAttributes(buffer);
    }
    
    public abstract boolean isAttributeEditable(String n);
    public abstract String getAttributeLabel(String n);
    public abstract String get(String attrName);
    public abstract void setAttributeValueFromString(String an, String attributeValue);
    public abstract TypeSpec getAttributeType(String attrName);
    
    @Override
    public void dump(PrintWriter pw) {
        super.dump(pw);
    }
    
}
